package cn.h8k.hj212.entity;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * HJ212协议CP数据组实体类
 * 包含一组CP数据项
 */
public class Hj212CpGroup {
    
    /**
     * 数据组索引
     */
    private int index;
    
    /**
     * CP数据项列表
     */
    private List<Hj212CpItem> items;
    
    /**
     * 默认构造函数
     */
    public Hj212CpGroup() {
        this.items = new ArrayList<>();
    }
    
    /**
     * 构造函数
     * @param index 数据组索引
     */
    public Hj212CpGroup(int index) {
        this.index = index;
        this.items = new ArrayList<>();
    }
    
    /**
     * 构造函数
     * @param index 数据组索引
     * @param items CP数据项列表
     */
    public Hj212CpGroup(int index, List<Hj212CpItem> items) {
        this.index = index;
        this.items = items != null ? items : new ArrayList<>();
    }
    
    public int getIndex() {
        return index;
    }
    
    public void setIndex(int index) {
        this.index = index;
    }
    
    public List<Hj212CpItem> getItems() {
        return items;
    }
    
    public void setItems(List<Hj212CpItem> items) {
        this.items = items;
    }
    
    /**
     * 添加CP数据项
     * @param item CP数据项
     */
    public void addItem(Hj212CpItem item) {
        if (this.items == null) {
            this.items = new ArrayList<>();
        }
        this.items.add(item);
    }
    
    /**
     * 根据名称获取CP数据项
     * @param name 数据项名称
     * @return CP数据项，如果不存在则返回null
     */
    public Hj212CpItem getItemByName(String name) {
        if (items == null) {
            return null;
        }
        return items.stream()
                .filter(item -> name.equals(item.getName()))
                .findFirst()
                .orElse(null);
    }
    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Hj212CpGroup that = (Hj212CpGroup) o;
        return index == that.index &&
               Objects.equals(items, that.items);
    }
    
    @Override
    public int hashCode() {
        return Objects.hash(index, items);
    }
    
    @Override
    public String toString() {
        return "Hj212CpGroup{" +
                "index=" + index +
                ", items=" + items +
                '}';
    }
} 